<!DOCTYPE html>
<html style="display: none;" lang="zh">
    <head>
    <meta charset="utf-8">
    <!--
        © Material Theme
        https://github.com/viosey/hexo-theme-material
        Version: 1.5.0 -->
    <script>
        window.materialVersion = "1.5.0"
        // Delete localstorage with these tags
        window.oldVersion = [
            'codestartv1',
            '1.3.4',
            '1.4.0',
            '1.4.0b1'
        ]
    </script>

    <!-- dns prefetch -->
    <meta http-equiv="x-dns-prefetch-control" content="on">



    <link rel="dns-prefetch" href="https://busuanzi.ibruce.info"/>












    <!-- Title -->
    
    <title>
        
            时间轴 | 
        
        ElderJames&#39; Blog
    </title>

    <!-- Meta & Info -->
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="format-detection" content="telephone=no"/>
    <meta name="theme-color" content="#0097A7">
    <meta name="author" content="James Yeung">
    <meta name="description" itemprop="description" content="学习、札记、分享">
    <meta name="keywords" content="ElderJames&#39; Blog">

    <!-- Import lsloader -->
    <script>(function(){window.lsloader={jsRunSequence:[],jsnamemap:{},cssnamemap:{}};lsloader.removeLS=function(key){try{localStorage.removeItem(key)}catch(e){}};lsloader.setLS=function(key,val){try{localStorage.setItem(key,val)}catch(e){}};lsloader.getLS=function(key){var val="";try{val=localStorage.getItem(key)}catch(e){val=""}return val};versionString="/*"+(window.materialVersion||"unknownVersion")+"*/";lsloader.clean=function(){try{var keys=[];for(var i=0;i<localStorage.length;i++){keys.push(localStorage.key(i))}keys.forEach(function(key){var data=lsloader.getLS(key);if(window.oldVersion){var remove=window.oldVersion.reduce(function(p,c){return p||data.indexOf("/*"+c+"*/")!==-1},false);if(remove){lsloader.removeLS(key)}}})}catch(e){}};lsloader.clean();lsloader.load=function(jsname,jspath,cssonload,isJs){if(typeof cssonload==="boolean"){isJs=cssonload;cssonload=undefined}isJs=isJs||false;cssonload=cssonload||function(){};var code;code=this.getLS(jsname);if(code&&code.indexOf(versionString)===-1){this.removeLS(jsname);this.requestResource(jsname,jspath,cssonload,isJs);return}if(code){var versionNumber=code.split(versionString)[0];if(versionNumber!=jspath){console.log("reload:"+jspath);this.removeLS(jsname);this.requestResource(jsname,jspath,cssonload,isJs);return}code=code.split(versionString)[1];if(isJs){this.jsRunSequence.push({name:jsname,code:code});this.runjs(jspath,jsname,code)}else{document.getElementById(jsname).appendChild(document.createTextNode(code));cssonload()}}else{this.requestResource(jsname,jspath,cssonload,isJs)}};lsloader.requestResource=function(name,path,cssonload,isJs){var that=this;if(isJs){this.iojs(path,name,function(path,name,code){that.setLS(name,path+versionString+code);that.runjs(path,name,code)})}else{this.iocss(path,name,function(code){document.getElementById(name).appendChild(document.createTextNode(code));that.setLS(name,path+versionString+code)},cssonload)}};lsloader.iojs=function(path,jsname,callback){var that=this;that.jsRunSequence.push({name:jsname,code:""});try{var xhr=new XMLHttpRequest;xhr.open("get",path,true);xhr.onreadystatechange=function(){if(xhr.readyState==4){if(xhr.status>=200&&xhr.status<300||xhr.status==304){if(xhr.response!=""){callback(path,jsname,xhr.response);return}}that.jsfallback(path,jsname)}};xhr.send(null)}catch(e){that.jsfallback(path,jsname)}};lsloader.iocss=function(path,jsname,callback,cssonload){var that=this;try{var xhr=new XMLHttpRequest;xhr.open("get",path,true);xhr.onreadystatechange=function(){if(xhr.readyState==4){if(xhr.status>=200&&xhr.status<300||xhr.status==304){if(xhr.response!=""){callback(xhr.response);cssonload();return}}that.cssfallback(path,jsname,cssonload)}};xhr.send(null)}catch(e){that.cssfallback(path,jsname,cssonload)}};lsloader.iofonts=function(path,jsname,callback,cssonload){var that=this;try{var xhr=new XMLHttpRequest;xhr.open("get",path,true);xhr.onreadystatechange=function(){if(xhr.readyState==4){if(xhr.status>=200&&xhr.status<300||xhr.status==304){if(xhr.response!=""){callback(xhr.response);cssonload();return}}that.cssfallback(path,jsname,cssonload)}};xhr.send(null)}catch(e){that.cssfallback(path,jsname,cssonload)}};lsloader.runjs=function(path,name,code){if(!!name&&!!code){for(var k in this.jsRunSequence){if(this.jsRunSequence[k].name==name){this.jsRunSequence[k].code=code}}}if(!!this.jsRunSequence[0]&&!!this.jsRunSequence[0].code&&this.jsRunSequence[0].status!="failed"){var script=document.createElement("script");script.appendChild(document.createTextNode(this.jsRunSequence[0].code));script.type="text/javascript";document.getElementsByTagName("head")[0].appendChild(script);this.jsRunSequence.shift();if(this.jsRunSequence.length>0){this.runjs()}}else if(!!this.jsRunSequence[0]&&this.jsRunSequence[0].status=="failed"){var that=this;var script=document.createElement("script");script.src=this.jsRunSequence[0].path;script.type="text/javascript";this.jsRunSequence[0].status="loading";script.onload=function(){that.jsRunSequence.shift();if(that.jsRunSequence.length>0){that.runjs()}};document.body.appendChild(script)}};lsloader.tagLoad=function(path,name){this.jsRunSequence.push({name:name,code:"",path:path,status:"failed"});this.runjs()};lsloader.jsfallback=function(path,name){if(!!this.jsnamemap[name]){return}else{this.jsnamemap[name]=name}for(var k in this.jsRunSequence){if(this.jsRunSequence[k].name==name){this.jsRunSequence[k].code="";this.jsRunSequence[k].status="failed";this.jsRunSequence[k].path=path}}this.runjs()};lsloader.cssfallback=function(path,name,cssonload){if(!!this.cssnamemap[name]){return}else{this.cssnamemap[name]=1}var link=document.createElement("link");link.type="text/css";link.href=path;link.rel="stylesheet";link.onload=link.onerror=cssonload;var root=document.getElementsByTagName("script")[0];root.parentNode.insertBefore(link,root)};lsloader.runInlineScript=function(scriptId,codeId){var code=document.getElementById(codeId).innerText;this.jsRunSequence.push({name:scriptId,code:code});this.runjs()};lsloader.loadCombo=function(jslist){var updateList="";var requestingModules={};for(var k in jslist){var LS=this.getLS(jslist[k].name);if(!!LS){var version=LS.split(versionString)[0];var code=LS.split(versionString)[1]}else{var version=""}if(version==jslist[k].path){this.jsRunSequence.push({name:jslist[k].name,code:code,path:jslist[k].path})}else{this.jsRunSequence.push({name:jslist[k].name,code:null,path:jslist[k].path,status:"comboloading"});requestingModules[jslist[k].name]=true;updateList+=(updateList==""?"":";")+jslist[k].path}}var that=this;if(!!updateList){var xhr=new XMLHttpRequest;xhr.open("get",combo+updateList,true);xhr.onreadystatechange=function(){if(xhr.readyState==4){if(xhr.status>=200&&xhr.status<300||xhr.status==304){if(xhr.response!=""){that.runCombo(xhr.response,requestingModules);return}}else{for(var i in that.jsRunSequence){if(requestingModules[that.jsRunSequence[i].name]){that.jsRunSequence[i].status="failed"}}that.runjs()}}};xhr.send(null)}this.runjs()};lsloader.runCombo=function(comboCode,requestingModules){comboCode=comboCode.split("/*combojs*/");comboCode.shift();for(var k in this.jsRunSequence){if(!!requestingModules[this.jsRunSequence[k].name]&&!!comboCode[0]){this.jsRunSequence[k].status="comboJS";this.jsRunSequence[k].code=comboCode[0];this.setLS(this.jsRunSequence[k].name,this.jsRunSequence[k].path+versionString+comboCode[0]);comboCode.shift()}}this.runjs()}})();</script>

    <!-- Import queue -->
    <script>function Queue(){this.dataStore=[];this.offer=b;this.poll=d;this.execNext=a;this.debug=false;this.startDebug=c;function b(e){if(this.debug){console.log("Offered a Queued Function.")}if(typeof e==="function"){this.dataStore.push(e)}else{console.log("You must offer a function.")}}function d(){if(this.debug){console.log("Polled a Queued Function.")}return this.dataStore.shift()}function a(){var e=this.poll();if(e!==undefined){if(this.debug){console.log("Run a Queued Function.")}e()}}function c(){this.debug=true}}var queue=new Queue();</script>

    <!-- Favicons -->
    <link rel="icon shortcut" type="image/ico" href="/img/favicon.png">
    <link rel="icon" sizes="192x192" href="/img/favicon.png">
    <link rel="apple-touch-icon" href="/img/favicon.png">

    <!--iOS -->
    <meta name="apple-mobile-web-app-title" content="Title">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="HandheldFriendly" content="True">
    <meta name="MobileOptimized" content="480">

    <!-- Add to homescreen for Chrome on Android -->
    <meta name="mobile-web-app-capable" content="yes">

    <!-- Add to homescreen for Safari on iOS -->
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="apple-mobile-web-app-title" content="ElderJames&#39; Blog">

    <!-- Site Verification -->
    
    

    <!-- RSS -->
    
        
            <link rel=alternate type="application/rss+xml" href="rss.xml">
        
    

    <!--[if lte IE 9]>
        <link rel="stylesheet" href="/css/ie-blocker.css">

        
            <script src="/js/ie-blocker.zhCN.js"></script>
        
    <![endif]-->

    <!-- Import CSS -->
    
        <style id="material_css"></style><script>if(typeof window.lsLoadCSSMaxNums === "undefined")window.lsLoadCSSMaxNums = 0;window.lsLoadCSSMaxNums++;lsloader.load("material_css","/css/material.min.css?976y5g1pRWbrdcUItimr0g==",function(){if(typeof window.lsLoadCSSNums === "undefined")window.lsLoadCSSNums = 0;window.lsLoadCSSNums++;if(window.lsLoadCSSNums == window.lsLoadCSSMaxNums)document.documentElement.style.display="";}, false)</script>
        <style id="style_css"></style><script>if(typeof window.lsLoadCSSMaxNums === "undefined")window.lsLoadCSSMaxNums = 0;window.lsLoadCSSMaxNums++;lsloader.load("style_css","/css/style.min.css?J9YGUOg9VFzvsUAJ8qxFsQ==",function(){if(typeof window.lsLoadCSSNums === "undefined")window.lsLoadCSSNums = 0;window.lsLoadCSSNums++;if(window.lsLoadCSSNums == window.lsLoadCSSMaxNums)document.documentElement.style.display="";}, false)</script>

        
            
        

    

    

    <!-- Config CSS -->

<!-- Other Styles -->
<style>
  body, html {
    font-family: Roboto, "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
    overflow-x: hidden !important;
  }
  
  code {
    font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
  }

  a {
    color: #00838F;
  }

  .mdl-card__media,
  #search-label,
  #search-form-label:after,
  #scheme-Paradox .hot_tags-count,
  #scheme-Paradox .sidebar_archives-count,
  #scheme-Paradox .sidebar-colored .sidebar-header,
  #scheme-Paradox .sidebar-colored .sidebar-badge{
    background-color: #0097A7 !important;
  }

  /* Sidebar User Drop Down Menu Text Color */
  #scheme-Paradox .sidebar-colored .sidebar-nav>.dropdown>.dropdown-menu>li>a:hover,
  #scheme-Paradox .sidebar-colored .sidebar-nav>.dropdown>.dropdown-menu>li>a:focus {
    color: #0097A7 !important;
  }

  #post_entry-right-info,
  .sidebar-colored .sidebar-nav li:hover > a,
  .sidebar-colored .sidebar-nav li:hover > a i,
  .sidebar-colored .sidebar-nav li > a:hover,
  .sidebar-colored .sidebar-nav li > a:hover i,
  .sidebar-colored .sidebar-nav li > a:focus i,
  .sidebar-colored .sidebar-nav > .open > a,
  .sidebar-colored .sidebar-nav > .open > a:hover,
  .sidebar-colored .sidebar-nav > .open > a:focus,
  #ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-head a {
    color: #0097A7 !important;
  }

  .toTop {
    background: #757575 !important;
  }

  .material-layout .material-post>.material-nav,
  .material-layout .material-index>.material-nav,
  .material-nav a {
    color: #757575;
  }

  #scheme-Paradox .MD-burger-layer {
    background-color: #757575;
  }

  #scheme-Paradox #post-toc-trigger-btn {
    color: #757575;
  }

  .post-toc a:hover {
    color: #00838F;
    text-decoration: underline;
  }

</style>


<!-- Theme Background Related-->

    <style>
      body {
        background-color: undefined;
      }

      /* blog_info bottom background */
      #scheme-Paradox .material-layout .something-else .mdl-card__supporting-text {
        background-color: #fff;
      }
    </style>




<!-- Fade Effect -->

    <style>
      .fade {
        transition: all 800ms linear;
        -webkit-transform: translate3d(0,0,0);
        -moz-transform: translate3d(0,0,0);
        -ms-transform: translate3d(0,0,0);
        -o-transform: translate3d(0,0,0);
        transform: translate3d(0,0,0);
        opacity: 1;
      }

      .fade.out{
        opacity: 0;
      }
    </style>


<!-- Import Font -->
<!-- Import Roboto -->

    <style>
        @font-face {
            font-family: Roboto;
            font-style: normal;
            font-weight: 300;
            src: url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-300.eot);
            src: local('Roboto'),local('Roboto-Normal'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-300.eot?#iefix) format('embedded-opentype'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-300.woff2) format('woff2'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-300.woff) format('woff'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-300.ttf) format('truetype'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-300.svg#Roboto) format('svg')
        }

        @font-face {
            font-family: Roboto;
            font-style: normal;
            font-weight: regular;
            src: url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-regular.eot);
            src: local('Roboto'),local('Roboto-Normal'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-regular.eot?#iefix) format('embedded-opentype'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-regular.woff2) format('woff2'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-regular.woff) format('woff'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-regular.ttf) format('truetype'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-regular.svg#Roboto) format('svg')
        }

        @font-face {
            font-family: Roboto;
            font-style: normal;
            font-weight: 500;
            src: url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-500.eot);
            src: local('Roboto'),local('Roboto-Normal'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-500.eot?#iefix) format('embedded-opentype'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-500.woff2) format('woff2'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-500.woff) format('woff'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-500.ttf) format('truetype'),url(https://lib.baomitu.com/fonts/roboto/roboto-v15-latin-500.svg#Roboto) format('svg')
        }
    </style>


<!-- Import Material Icon -->

    <link rel="stylesheet" href="//cdn.bootcss.com/material-design-icons/3.0.1/iconfont/material-icons.min.css">




    <!-- Import jQuery -->
    
        <script>lsloader.load("jq_js","https://cdn.bootcss.com/jquery/2.2.1/jquery.js", true)</script>
    

    <!-- The Open Graph protocol -->
    <meta property="og:url" content="https://yangshunjie.com">
    <meta property="og:type" content="blog">
    <meta property="og:title" content="时间轴 | ElderJames&#39; Blog">
    <meta property="og:image" content="https://yangshunjie.com/img/favicon.png" />
    <meta property="og:description" content="学习、札记、分享">
    

    

    <!-- The Twitter Card protocol -->
    <meta name="twitter:title" content="时间轴 | ElderJames&#39; Blog">
    <meta name="twitter:description" content="学习、札记、分享">
    <meta name="twitter:image" content="https://yangshunjie.com/img/favicon.png">
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:url" content="https://yangshunjie.com" />

    <!-- Add canonical link for SEO -->
    
        <link rel="canonical" href="https://yangshunjie.com/timeline.html" />
    

    <!-- Structured-data for SEO -->
    
        



    

    <!-- Analytics -->
    
    
    

    <!-- Custom Head -->
    

<link rel="stylesheet" href="/css/prism-vs.css" type="text/css">
<link rel="stylesheet" href="/css/prism-line-numbers.css" type="text/css"></head>


    
        <body id="scheme-Paradox" class="lazy">
            <div class="material-layout  mdl-js-layout has-drawer is-upgraded">
                

                <!-- Main Container -->
                <main class="material-layout__content" id="main">

                    <!-- Top Anchor -->
                    <div id="top"></div>

                    
                        <!-- Hamburger Button -->
                        <button class="MD-burger-icon sidebar-toggle">
                            <span class="MD-burger-layer"></span>
                        </button>
                    

                    <!-- Post TOC -->


<!-- Layouts -->

    <!-- Single Timeline Page -->
    <style>
	.md-container {
		width: 90%;
		max-width: 1170px;
		margin: 0 auto;
	}
	.md-container::after {
		content: '';
		display: table;
		clear: both;
	}
	#md-timeline {
		position: relative;
		padding: 2em 0;
		margin-top: 2em;
		margin-bottom: 2em;
	}
	@media screen and (max-device-width:480px){
		#md-timeline {
			margin-top: 6em;
		}
	}
	#md-timeline::before {
		content: '';
		position: absolute;
		top: 0;
		left: 18px;
		height: 100%;
		width: 2px;
		background: #d7e4ed;
	}
	.md-timeline-title {
		font-size: 20px;
		line-height: 24px;
	}
	.md-timeline-content a {
		text-decoration: none;
	}
	.md-timeline-info {
		height: 20px;
		width: 100%;
		margin: 10px 0px;
	}
	.md-timeline-info-span {
		float: right;
		margin-right: 10px;
		text-align: right;
	}
	.md-timeline-excerpt {
	    	clear: right; 
	}
	@media only screen and (min-width: 1170px) {
		#md-timeline {
			margin-top: 3em;
			margin-bottom: 3em;
		}
		#md-timeline::before {
			left: 50%;
			margin-left: -2px;
		}
	}
	.md-timeline-block {
		position: relative;
		margin: 2em 0;
	}
	.md-timeline-block:after {
		content: "";
		display: table;
		clear: both;
	}
	.md-timeline-block:first-child {
		margin-top: 0;
	}
	.md-timeline-block:last-child {
		margin-bottom: 0;
	}
	@media only screen and (min-width: 1170px) {
		.md-timeline-block {
			margin: 4em 0;
		}
		.md-timeline-block:first-child {
			margin-top: 0;
		}
		.md-timeline-block:last-child {
			margin-bottom: 0;
		}
	}
	.md-timeline-date {
		position: absolute;
		top: 0;
		left: 0;
		width: 60px;
		height: 40px;
		border-radius: box-shadow: 0 0 0 4px white, inset 0 2px 0 rgba(0, 0, 0, 0.08), 0 3px 0 4px rgba(0, 0, 0, 0.05);
	}
	.md-timeline-date.blue {
		background: #0D395F;
		-webkit-box-shadow: 0px 4px 15px 0px rgba(0, 0, 0, 0.75);
		-moz-box-shadow: 0px 4px 15px 0px rgba(0, 0, 0, 0.75);
		box-shadow: 0px 4px 15px 0px rgba(0, 0, 0, 0.75);
	}
	@media only screen and (min-width: 1170px) {
		.md-timeline-date {
			width: 60px;
			height: 60px;
			left: 50%;
			margin-left: -30px;
			/* Force Hardware Acceleration in WebKit */
			-webkit-transform: translateZ(0);
			-webkit-backface-visibility: hidden;
		}
		.cssanimations .md-timeline-date.is-hidden {
			visibility: hidden;
		}
		.cssanimations .md-timeline-date.bounce-in {
			visibility: visible;
			-webkit-animation: md-bounce-1 0.6s;
			-moz-animation: md-bounce-1 0.6s;
			animation: md-bounce-1 0.6s;
		}
	}
	@-webkit-keyframes md-bounce-1 {
		0% {
			opacity: 0;
			-webkit-transform: scale(0.5);
		}
		60% {
			opacity: 1;
			-webkit-transform: scale(1.2);
		}
		100% {
			-webkit-transform: scale(1);
		}
	}
	@-moz-keyframes md-bounce-1 {
		0% {
			opacity: 0;
			-moz-transform: scale(0.5);
		}
		60% {
			opacity: 1;
			-moz-transform: scale(1.2);
		}
		100% {
			-moz-transform: scale(1);
		}
	}
	@keyframes md-bounce-1 {
		0% {
			opacity: 0;
			-webkit-transform: scale(0.5);
			-moz-transform: scale(0.5);
			-ms-transform: scale(0.5);
			-o-transform: scale(0.5);
			transform: scale(0.5);
		}
		60% {
			opacity: 1;
			-webkit-transform: scale(1.2);
			-moz-transform: scale(1.2);
			-ms-transform: scale(1.2);
			-o-transform: scale(1.2);
			transform: scale(1.2);
		}
		100% {
			-webkit-transform: scale(1);
			-moz-transform: scale(1);
			-ms-transform: scale(1);
			-o-transform: scale(1);
			transform: scale(1);
		}
	}
	.md-timeline-content {
		position: relative;
		margin-left: 60px;
		background: white;
		padding: 1em;
		-webkit-box-shadow: 0px 4px 15px 0px rgba(0, 0, 0, 0.75);
		-moz-box-shadow: 0px 4px 15px 0px rgba(0, 0, 0, 0.75);
		box-shadow: 0px 4px 15px 0px rgba(0, 0, 0, 0.75);
	}
	.md-timeline-content:after {
		content: "";
		display: table;
		clear: both;
	}
	.md-timeline-content h2 {
		color: #303e49;
	}
	.md-timeline-content p, .md-timeline-content .md-read-more, .md-timeline-content .md-date {
		font-size: 13px;
		font-size: 0.8125rem;
	}
	.md-timeline-content .md-read-more, .md-timeline-content .md-date {
		display: inline-block;
	}
	.md-timeline-content p {
		margin: 1em 0;
		line-height: 1.6;
	}
	.md-timeline-content .md-read-more {
		float: right;
		padding: .8em 1em;
		background: #acb7c0;
		color: white;
		border-radius: 0.25em;
	}
	.md-date {
		color: white;
		text-align: center;
	}
	.no-touch .md-timeline-content .md-read-more:hover {
		background-color: #bac4cb;
	}
	.md-timeline-content::before {
		content: '';
		position: absolute;
		top: 16px;
		right: 100%;
		height: 0;
		width: 0;
		border: 7px solid transparent;
		border-right: 7px solid white;
	}
	@media only screen and (min-width: 768px) {
		.md-timeline-content h2 {
			font-size: 20px;
			font-size: 1.25rem;
		}
		.md-timeline-content p {
			font-size: 16px;
			font-size: 1rem;
		}
		.md-timeline-content .md-read-more {
			font-size: 14px;
			font-size: 0.875rem;
		}
	}
	@media only screen and (min-width: 1170px) {
		.md-date {
			text-align: center;
			margin-top: 10px;
			line-height: 20px;
		}
		.md-timeline-content {
			margin-left: 0;
			padding: 1.6em;
			width: 45%;
		}
		.md-timeline-content::before {
			top: 24px;
			left: 100%;
			border-color: transparent;
			border-left-color: white;
		}
		.md-timeline-content .md-read-more {
			float: left;
		}
		.md-timeline-block:nth-child(even) .md-timeline-content {
			float: right;
		}
		.md-timeline-block:nth-child(even) .md-timeline-content::before {
			top: 24px;
			left: auto;
			right: 100%;
			border-color: transparent;
			border-right-color: white;
		}
		.md-timeline-block:nth-child(even) .md-timeline-content .md-read-more {
			float: right;
		}
		.cssanimations .md-timeline-content.is-hidden {
			visibility: hidden;
		}
		.cssanimations .md-timeline-content.bounce-in {
			visibility: visible;
			-webkit-animation: md-bounce-2 0.6s;
			-moz-animation: md-bounce-2 0.6s;
			animation: md-bounce-2 0.6s;
		}
	}
	@media only screen and (min-width: 1170px) {
		/* inverse bounce effect on even content blocks */
		.cssanimations .md-timeline-block:nth-child(even) .md-timeline-content.bounce-in {
			-webkit-animation: md-bounce-2-inverse 0.6s;
			-moz-animation: md-bounce-2-inverse 0.6s;
			animation: md-bounce-2-inverse 0.6s;
		}
	}
	@-webkit-keyframes md-bounce-2 {
		0% {
			opacity: 0;
			-webkit-transform: translateX(-100px);
		}
		60% {
			opacity: 1;
			-webkit-transform: translateX(20px);
		}
		100% {
			-webkit-transform: translateX(0);
		}
	}
	@-moz-keyframes md-bounce-2 {
		0% {
			opacity: 0;
			-moz-transform: translateX(-100px);
		}
		60% {
			opacity: 1;
			-moz-transform: translateX(20px);
		}
		100% {
			-moz-transform: translateX(0);
		}
	}
	@keyframes md-bounce-2 {
		0% {
			opacity: 0;
			-webkit-transform: translateX(-100px);
			-moz-transform: translateX(-100px);
			-ms-transform: translateX(-100px);
			-o-transform: translateX(-100px);
			transform: translateX(-100px);
		}
		60% {
			opacity: 1;
			-webkit-transform: translateX(20px);
			-moz-transform: translateX(20px);
			-ms-transform: translateX(20px);
			-o-transform: translateX(20px);
			transform: translateX(20px);
		}
		100% {
			-webkit-transform: translateX(0);
			-moz-transform: translateX(0);
			-ms-transform: translateX(0);
			-o-transform: translateX(0);
			transform: translateX(0);
		}
	}
	@-webkit-keyframes md-bounce-2-inverse {
		0% {
			opacity: 0;
			-webkit-transform: translateX(100px);
		}
		60% {
			opacity: 1;
			-webkit-transform: translateX(-20px);
		}
		100% {
			-webkit-transform: translateX(0);
		}
	}
	@-moz-keyframes md-bounce-2-inverse {
		0% {
			opacity: 0;
			-moz-transform: translateX(100px);
		}
		60% {
			opacity: 1;
			-moz-transform: translateX(-20px);
		}
		100% {
			-moz-transform: translateX(0);
		}
	}
	@keyframes md-bounce-2-inverse {
		0% {
			opacity: 0;
			-webkit-transform: translateX(100px);
			-moz-transform: translateX(100px);
			-ms-transform: translateX(100px);
			-o-transform: translateX(100px);
			transform: translateX(100px);
		}
		60% {
			opacity: 1;
			-webkit-transform: translateX(-20px);
			-moz-transform: translateX(-20px);
			-ms-transform: translateX(-20px);
			-o-transform: translateX(-20px);
			transform: translateX(-20px);
		}
		100% {
			-webkit-transform: translateX(0);
			-moz-transform: translateX(0);
			-ms-transform: translateX(0);
			-o-transform: translateX(0);
			transform: translateX(0);
		}
	}
</style>

<section id="md-timeline" class="md-container">
   	   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">12月 15 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/my-first-respberry-pi.html">我的第一块树莓派</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/树莓派/">树莓派</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Linux/">Linux</a>, <a class="tag-link" href="/tags/树莓派/">树莓派</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 圣诞节前，收到一块树莓派！在此感谢俊儿~

						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">11月 30 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/Customized-View-Path-And-Theme-Switching-In-AspNetCore.html">ASP.NET Core 中的SEO优化（4）：自定义视图路径及主题切换</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/NET-Core/">.NET Core</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET-Core/">.NET Core</a>, <a class="tag-link" href="/tags/ASP-NET-Core/">ASP.NET Core</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 系列回顾

						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">11月 29 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/A-Middleware-Implement-For-Customized-Routing-In-AspNetCore.html">ASP.NET Core 中的SEO优化（3）:自定义路由匹配和生成</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/NET-Core/">.NET Core</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET-Core/">.NET Core</a>, <a class="tag-link" href="/tags/ASP-NET-Core/">ASP.NET Core</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 前言前两篇文章主要总结了CMS系统两个技术点在ASP.NET Core中的应用：


						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">11月 23 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/A-Middleware-Implement-For-Rendering-Razor-Views-In-AspNetCore.html">ASP.NET Core 中的SEO优化（2）：中间件中渲染Razor视图</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/NET-Core/">.NET Core</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET-Core/">.NET Core</a>, <a class="tag-link" href="/tags/ASP-NET-Core/">ASP.NET Core</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 前言上一篇文章
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">11月 23 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/A-Middleware-Implement-For-Server-Side-Static-Caching-In-AspNetCore.html">ASP.NET Core 中的SEO优化（1）：中间件实现服务端静态化缓存</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/NET-Core/">.NET Core</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET-Core/">.NET Core</a>, <a class="tag-link" href="/tags/ASP-NET-Core/">ASP.NET Core</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 分享最近在公司成功落地了一个用ASP.NET Core 开发前台的CMS项目，虽然对于表层的开发是兼容MVC5的，但是作为爱好者当然要用尽量多的ASP.NET...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">9月 26 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/influxdb-in-dotNEt-Core-2-ioc-and-repository-pattern.html">时序数据库InfluxDB在.NET Core中的使用——（2）IoC和仓储模式实现事件存储</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/NET-Core/">.NET Core</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET-Core/">.NET Core</a>, <a class="tag-link" href="/tags/InfluxDB/">InfluxDB</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 我上一篇文章《InfluxDB在.NET Core中的使用——（1）InfluxDB简介》中简单介绍了InfluxDB的相关概念，本文将继续介绍下半部分，就是在.NET ...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">9月 25 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/influxdb-in-dotNEt-Core-1-Introduction.html">时序数据库InfluxDB在.NET Core中的使用——（1）InfluxDB简介及使用</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/NET-Core/">.NET Core</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET-Core/">.NET Core</a>, <a class="tag-link" href="/tags/InfluxDB/">InfluxDB</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 简介
InfluxDB是一个由InfluxData开发的开源时序型数据库。它由Go写成，着力于高性能地查询与存储时序型数据。Influ...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">9月 13 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/dynamically-add-features-to-the-controller-type-in-dot-net-core.html">ASP.NET Core中动态为控制器类型添加特性</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/NET-Core/">.NET Core</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET-Core/">.NET Core</a>, <a class="tag-link" href="/tags/ASP-NET-Core/">ASP.NET Core</a>, <a class="tag-link" href="/tags/MVC/">MVC</a>, <a class="tag-link" href="/tags/WebApi/">WebApi</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 我在上一篇文章《ASP.NET Core中为指定类添加WebApi服务功能》中...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">9月 12 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/add-the-webapi-service-to-the-specified-class-in-asp-net-core.html">ASP.NET Core中为指定类添加WebApi服务功能</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/NET-Core/">.NET Core</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET-Core/">.NET Core</a>, <a class="tag-link" href="/tags/ASP-NET-Core/">ASP.NET Core</a>, <a class="tag-link" href="/tags/MVC/">MVC</a>, <a class="tag-link" href="/tags/WebApi/">WebApi</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 POCO Controller是 ASP.NET Core 中的一个特性，虽然在2015年刚发布的时候就有这个特性了，可是大多数开发者都只是按原有的方式去写，而没有用到这个特性。其实，如果利用这个特性进行稍微封装后，用在SOA架构中Service层的场景...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">9月 12 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/change-the-docker-image-origin-to-aliyun.html">更换阿里云Docker镜像源</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/Docker/">Docker</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Docker/">Docker</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 由于Docker技术比虚拟机技术更为轻便、快捷。自 2013 年 3 月以Apache 2.0授权协议开源后，到近两年成为当下分布式系统最热门的开发运维方式。由于国内网络连接Docker官方源很慢，甚至无法从官方源拉取镜像创建容器，所以这篇文章介绍如何把Docker源更换为阿里云的，使中...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">8月 25 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/ddd-project-collection.html">领域驱动设计（DDD）项目收集</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/DDD/">DDD</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET/">.NET</a>, <a class="tag-link" href="/tags/NET-Core/">.NET Core</a>, <a class="tag-link" href="/tags/DDD/">DDD</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 前言自从来了现在这家公司之后，就喜欢实践DDD开发程序，最近开始写一个叫做
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">8月 02 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/how-to-request-a-free-https.html">给你的域名加把锁：免费Https申请</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/Github-Pages/">Github Pages</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Github-Pages/">Github Pages</a>, <a class="tag-link" href="/tags/Hexo/">Hexo</a>, <a class="tag-link" href="/tags/Https/">Https</a>, <a class="tag-link" href="/tags/SSL/">SSL</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 关于Https的介绍，先引用一段维基百科的描述：

超文本传输安全协议（英语：Hypertext Transfer Protocol Secure，缩写：HTTPS，常称为HTTP over TLS，HTTP over SSL或HTTP Secure...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">8月 01 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/Use-Appveyor-to-continuously-integrate-your-Hexo-blog.html">使用AppVeyor持续集成你的Hexo博客</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/Hexo/">Hexo</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Appveyor/">Appveyor</a>, <a class="tag-link" href="/tags/CI/">CI</a>, <a class="tag-link" href="/tags/Hexo/">Hexo</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 炎热的盛夏，真的是让人难以入眠。在这种不免之夜，如果还加上停电……简直就是惨绝人寰了！
还好，今晚没停电，可以让我吹着风扇安心去写这篇文章。
距离我建立这个博客都过去一周了，一直都在做这个站点的建设。首先是找到个好看的主题，之后绑定自己的https域名，然后是...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">7月 26 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/migrate-blog-from-ghost-to-hexo-and-github.html">Hello Hexo! 从Ghost迁移博客到Hexo</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/Hexo/">Hexo</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Github-Pages/">Github Pages</a>, <a class="tag-link" href="/tags/Hexo/">Hexo</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 很高兴用上了hexo来搭建博客！
因为最近使用学习angular、vue、cordova等框架和技术，慢慢喜欢上了用node来构建应用程序的过程。我原来的博客系统是Ghost,部署在亚马逊AWS上。最近AWS一年免费体验准备到期了，博客也要找个别的地方安放。
...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">3月 14 2017</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/visual-studio-2017-zheng-shi-ban-an-zhuang-wen-ti-ji-jie-jue-fang-an-ji-lu.html">Visual Studio 2017 正式版安装问题及解决方案记录</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Visual-Studio/">Visual Studio</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 ##Visual Studio 2017正式版终于出来啦！
下载地址：请到主页
推荐使用安装器...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">9月 22 2016</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/n.html">NPM 国内镜像</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NPM/">NPM</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 npm由于很多时候都需要从国外的服务器下载组件，由于众所周知的原因，国内安装时往往会很慢甚至卡住安装不上的情况，这时就需要替换一下安装源，使用国内服务商提供的镜像：


						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">9月 22 2016</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/asp-net-corezhong-shi-yong-qing-qiu-sheng-ming-zhou-qi-nei-wei-yi-de-dbcontext.html">ASP.NET Core中使用依赖注入获得请求生命周期内唯一的DbContext</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET/">.NET</a>, <a class="tag-link" href="/tags/NET-Core/">.NET Core</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 很高兴，我的博客又回来了。
在使用.NET Core来开发项目已经有两个多月了，想在这里记录一些在.NET Core中比较方便的知识。
这里讲一讲在ASP.NET Core中使用依赖注入的方式请求生命周期内唯一的DbContext。按照以往.NET F...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">7月 30 2016</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/ef-core-for-mysql-de-databasefang-shi-lian-jie-shu-ju-ku.html">EF Core For Mysql 的DataBase First（基于已有数据库）方式连接数据库</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET-Core/">.NET Core</a>, <a class="tag-link" href="/tags/Mysql/">Mysql</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 .NET要跨平台，就一定要使用同样可以跨平台的数据库，而轻量的MySQL自然是首选。.NET Core发展到现在，虽然官方的Entity Framework还没发布MySQL版本，但是刚认识的柚子大神已经首先把它做出来了（
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">7月 30 2016</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/yi-zhu-ru-de-fang-shi.html">.NET Core以依赖注入的方式配置MySql的DbContext</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET-Core/">.NET Core</a>, <a class="tag-link" href="/tags/Mysql/">Mysql</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 使用ASP.NET Core开发Web项目，在很多方面都跟之前的.NET版本有很大不同，在Startup.cs的配置方面,一言不合就使用依赖注入。当然，这对于整个项目的解耦是极好的。这次踩的坑在DbContext的配置上。
在
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">7月 19 2016</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/shi-yong-securecrtlian-jie-ya-ma-xun-yun-fu-wu-qi.html">使用SecureCRT连接免费的亚马逊云服务器</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Amazon-AWS/">Amazon AWS</a>, <a class="tag-link" href="/tags/Linux/">Linux</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 亚马逊AWS有一年的免费体验，相比国内的阿里云、腾讯云的优惠政策更实在，而且又不用认证、也不用备案，一个邮箱帐号就能获得，简直就是我等学生（虽然已经不是了，但刚出来工作没几个钱呀！）的福利！
在亚马逊中，选择“新加坡”、“首尔”、“东京”这几个位于亚洲的节点响应速度都算是比...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">7月 12 2016</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/net-core-zi-liao-zheng-li.html">.NET Core 资料整理</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET-Core/">.NET Core</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 ##工具下载


						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">7月 12 2016</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/yun-xing-zai-monoshang-de-efyun-xing-cuo-wu.html">记在Mono 4.2 上EF使用Select操作时会发生的错误</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET/">.NET</a>, <a class="tag-link" href="/tags/EF/">EF</a>, <a class="tag-link" href="/tags/mono/">mono</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 错误提示：The classes in the module cannot be loaded.
代码还原：
 var d...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">7月 08 2016</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/as.html">ASP.NET Core使用Session方法</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET/">.NET</a>, <a class="tag-link" href="/tags/NET-Core/">.NET Core</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 
在project.json配置文件中引入程序集：&quot;Microsoft.AspNetCore.Session&quot;: &quot;1.0.0&quot;

在Startup.cs的Configure...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">6月 30 2016</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/cong-jiu-ban-net-core-sheng-ji-dao-net-core-1-0zheng-shi-ban.html">从旧版.NET Core 升级到.NET Core 1.0正式版</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							<a class="category-link" href="/categories/NET-Core/">.NET Core</a>
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET/">.NET</a>, <a class="tag-link" href="/tags/NET-Core/">.NET Core</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 6月28日凌晨，RedHat 开发者大会上微软正式发布.NET Core正式版，我作为.NET爱好者，马上就想安装来玩玩，不过因为之前电脑上就装有旧版本，在这次正式版的安装中遇到了一些坑，装了n遍，死活装不上，停留在旧版本。
下载地址：


						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">3月 28 2016</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/git-cao-zuo-bi-ji.html">git 操作笔记</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Git/">Git</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 $ cd myproject  你建立的项目文件夹
$ git init   执行git的本地初始化
$ git add .  将所有的文件添加到版本控制系统

						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">3月 26 2016</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/ubuntu-da-jian-gogs-qing-liang-git-webduan-guan-li-xi-tong.html">Ubuntu 搭建Gogs ：轻量Git Web端管理系统</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Linux/">Linux</a>, <a class="tag-link" href="/tags/Ubuntu/">Ubuntu</a>, <a class="tag-link" href="/tags/git/">git</a>, <a class="tag-link" href="/tags/gogs/">gogs</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 Gogs是国人开发的开源git管理系统，类似gitlab，可在服务器上搭建私人的git版本管理系统。内建很多功能，但俾比gitlab安装更方便，占用更少的资源。详细介绍还是看看官方网站吧：
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">3月 24 2016</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/xiu-fu-apt-getbao-guan-li.html">修复apt-get包管理</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Linux/">Linux</a>, <a class="tag-link" href="/tags/Ubuntu/">Ubuntu</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 1.通过wget http://oss.aliyuncs.com/aliyunecs/update_source.tgz 下载update_source的压缩包。
2.tar xvf update_source.tgz解压...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">3月 21 2016</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/dong-tai-chuang-jian-fan-xing-jie-kou-shi-li.html">C#利用反射机制动态创建泛型接口实例</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET/">.NET</a>, <a class="tag-link" href="/tags/C/">C#</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 我很懒，不希望写重复的copy代码，所以希望在写代码时能尽量简化和重用，一些设计上有但没必要的能不写就不写，但当然必须要实现。
最近学会用C#的反射机制，觉得非常好，可以通过类名实例化一个对应的对象。于是我就想到了在设计业务层时，一些通用的数据库操作是以泛型基类的形式供给各...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">12月 03 2015</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/the-lastest-way-to-install-mono-4-2-1-on-ubuntu.html">Ubuntu安装mono 4.2.1 最新版教程</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Linux/">Linux</a>, <a class="tag-link" href="/tags/Ubuntu/">Ubuntu</a>, <a class="tag-link" href="/tags/mono/">mono</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 现在安装mono已经不用make命令来编译，可以直接执行apt-get mono-complete来安装最新的mono版本。
下面看看怎么安装：

首先，在mono-project的安装指南页面获得最新的注册信息，
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">11月 06 2015</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/make-mysql-support-chinese-encoding.html">ASP.NET 连接 Mysql 支持中文编码</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Mysql/">Mysql</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 1、关闭mysql服务service mysql stop
2、修改 /etc/mysql/my.cnf  （默认的安装路径）vim /etc/mysql/my.cnf
3、打开my.cnf后...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">10月 30 2015</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/use-qiniu-upload-file-service-on-ueditor-for-asp-net-mvc.html">ASP.NET MVC 中UEditor 1.4.3 前台直接上传文件到七牛云存储</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/NET/">.NET</a>, <a class="tag-link" href="/tags/七牛/">七牛</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 最近在做一个ASP.NET MVC 的项目，当然是离不开富文本编辑器，这里我选择的是百度的UEditor，虽然不够轻量，界面也不好看，但是功能还是挺多的。而因为项目主要面对移动端的用户，所以为了减轻低配服务器的压力，也为了用户体验更佳，决定在项目中接入七牛云存储。
选择七牛...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">10月 13 2015</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/the-smtp-setting-for-ghost-blog.html">Ghost博客邮件SMTP服务配置</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/ghost/">ghost</a>, <a class="tag-link" href="/tags/smtp/">smtp</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 前天由于回到学校，用回了我的Pocker2机械键盘，在输入密码时连续不知道大小写切换键换了地方，连续输错了密码，帐号被封了……
Ghost也是的，连博客主人的号都能封，还不能（也可能是我不会）通过操作服务器（比如Wordpress能通过删除配置文件）来重置密码，只能通过发送...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">10月 10 2015</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/the-multiple-views-structure-on-framework7.html">Framework7多视图（View）工具栏布局</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Framework7/">Framework7</a>, <a class="tag-link" href="/tags/前端/">前端</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 HiApp 可以算是一个比较完整的App，其中有很多能够学习的地方，比如它用的RequireJS 、它的界面交互等等，而对于初学者来说，它的布局结构是很值得学习的。因为它的结构是目前绝大多数App的常用布局，分为顶部导航栏Navbar，中 部多个视图View，底部是切换view的工具栏T...
						...
					</p>
                    		</div>
			</div>	
   		
			<div class="md-timeline-block">
                		<div class="md-timeline-date blue">
                   			<div class="md-date">10月 05 2015</div>
                		</div>

                		<div class="md-timeline-content">
                    			<div class="md-timeline-title"><a href="/install-ghost-blog-on-jexus-successfully.html">在Jexus环境部署Ghost博客系统</a></div>
					<div class="md-timeline-info">
						<span class="md-timeline-info-span">Categories:
							
						</span>
						<span class="md-timeline-info-span">Tags:
							<a class="tag-link" href="/tags/Blog/">Blog</a>, <a class="tag-link" href="/tags/Jexus/">Jexus</a>, <a class="tag-link" href="/tags/Linux/">Linux</a>, <a class="tag-link" href="/tags/环境部署/">环境部署</a>
						</span>
						
					</div>
					<p class="md-timeline-excerpt">
						
							 ###建博感言很久以前就想有自己的博客，但由于无暇顾及而荒废了。之前使用过WordPress，它的功能十分强大，安装之后就一直手痒弄着主题和插件。但是这实在太麻烦了，也不是我最终需要的，。我自认不是一个设计师，不能做出个漂亮的东西，但我喜欢什么样的博客我还是知道的。

						...
					</p>
                    		</div>
			</div>	
   			   	  		
   	</section>

<script type="text/ls-javascript" id="page-timeline-script">
    var adjustFooter = function() {
        if( ($('#bottom').offset().top + $('#bottom').outerHeight() )<$(window).height() ) {
            var footerBottom = $(window).height() - $('#bottom').outerHeight() - $('#bottom').offset().top;
            $('#bottom').css('bottom', '-' + footerBottom + 'px');
        }
    };
    $(document).ready(function() {
        adjustFooter();
    });
</script>





                    
                        <!-- Overlay For Active Sidebar -->
<div class="sidebar-overlay"></div>

<!-- Material sidebar -->
<aside id="sidebar" class="sidebar sidebar-colored sidebar-fixed-left" role="navigation">
    <div id="sidebar-main">
        <!-- Sidebar Header -->
        <div class="sidebar-header header-cover" style="background-image: url(/img/sidebar_header.png);">
    <!-- Top bar -->
    <div class="top-bar"></div>

    <!-- Sidebar toggle button -->
    <button type="button" class="sidebar-toggle mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon" style="display: initial;" data-upgraded=",MaterialButton,MaterialRipple">
        <i class="material-icons">clear_all</i>
        <span class="mdl-button__ripple-container">
            <span class="mdl-ripple">
            </span>
        </span>
    </button>

    <!-- Sidebar Avatar -->
    <div class="sidebar-image">
        <img src="https://avatars0.githubusercontent.com/u/7550366?v=4&amp;s=460" alt="James Yeung's avatar">
    </div>

    <!-- Sidebar Email -->
    <a data-toggle="dropdown" class="sidebar-brand" href="#settings-dropdown">
        shunjiey@hotmail.com
        <b class="caret"></b>
    </a>
</div>


        <!-- Sidebar Navigation  -->
        <ul class="nav sidebar-nav">
    <!-- User dropdown  -->
    <li class="dropdown">
        <ul id="settings-dropdown" class="dropdown-menu">
            
                <li>
                    <a href="mailto:shunjiey@hotmail.com" target="_blank" title="Email Me">
                        
                            <i class="material-icons sidebar-material-icons sidebar-indent-left1pc-element">email</i>
                        
                        Email Me
                    </a>
                </li>
            
        </ul>
    </li>

    <!-- Homepage -->
    
        <li id="sidebar-first-li">
            <a href="/">
                
                    <i class="material-icons sidebar-material-icons">home</i>
                
                主页
            </a>
        </li>
        
    

    <!-- Archives  -->
    
        <li class="dropdown">
            <a href="#" class="ripple-effect dropdown-toggle" data-toggle="dropdown">
                
                    <i class="material-icons sidebar-material-icons">inbox</i>
                
                    归档
                <b class="caret"></b>
            </a>
            <ul class="dropdown-menu">
            <li>
                <a class="sidebar_archives-link" href="/archives/2017/12/">十二月 2017<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2017/11/">十一月 2017<span class="sidebar_archives-count">4</span></a></li><li><a class="sidebar_archives-link" href="/archives/2017/09/">九月 2017<span class="sidebar_archives-count">5</span></a></li><li><a class="sidebar_archives-link" href="/archives/2017/08/">八月 2017<span class="sidebar_archives-count">3</span></a></li><li><a class="sidebar_archives-link" href="/archives/2017/07/">七月 2017<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2017/03/">三月 2017<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2016/09/">九月 2016<span class="sidebar_archives-count">2</span></a></li><li><a class="sidebar_archives-link" href="/archives/2016/07/">七月 2016<span class="sidebar_archives-count">6</span></a></li><li><a class="sidebar_archives-link" href="/archives/2016/06/">六月 2016<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2016/03/">三月 2016<span class="sidebar_archives-count">4</span></a></li><li><a class="sidebar_archives-link" href="/archives/2015/12/">十二月 2015<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2015/11/">十一月 2015<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/archives/2015/10/">十月 2015<span class="sidebar_archives-count">4</span></a>
            </ul>
        </li>
        
    

    <!-- Categories  -->
    
        <li class="dropdown">
            <a href="#" class="ripple-effect dropdown-toggle" data-toggle="dropdown">
                
                    <i class="material-icons sidebar-material-icons">chrome_reader_mode</i>
                
                分类
                <b class="caret"></b>
            </a>
            <ul class="dropdown-menu">
                <li>
                <a class="sidebar_archives-link" href="/categories/NET-Core/">.NET Core<span class="sidebar_archives-count">9</span></a></li><li><a class="sidebar_archives-link" href="/categories/DDD/">DDD<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/categories/Docker/">Docker<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/categories/Github-Pages/">Github Pages<span class="sidebar_archives-count">1</span></a></li><li><a class="sidebar_archives-link" href="/categories/Hexo/">Hexo<span class="sidebar_archives-count">2</span></a></li><li><a class="sidebar_archives-link" href="/categories/树莓派/">树莓派<span class="sidebar_archives-count">1</span></a>
            </ul>
        </li>
        
    

    <!-- Pages  -->
    
        <li>
            <a href="/tags.html" title="标签云">
                
                    <i class="material-icons sidebar-material-icons">local_offer</i>
                
                标签云
            </a>
        </li>
        
    
        <li>
            <a href="/timeline.html" title="时间轴">
                
                    <i class="material-icons sidebar-material-icons">list</i>
                
                时间轴
            </a>
        </li>
        
    
        <li>
            <a href="/contact.html" title="留言板">
                
                    <i class="material-icons sidebar-material-icons">forum</i>
                
                留言板
            </a>
        </li>
        
    
        <li>
            <a href="/about.html" title="关于我">
                
                    <i class="material-icons sidebar-material-icons">face</i>
                
                关于我
            </a>
        </li>
        
    
        <li>
            <a href="/gallery.html" title="相册">
                
                    <i class="material-icons sidebar-material-icons">image</i>
                
                相册
            </a>
        </li>
        
    
        <li>
            <a href="/friends.html" title="朋友">
                
                    <i class="material-icons sidebar-material-icons">people</i>
                
                朋友
            </a>
        </li>
        
    

    <!-- Article Number  -->
    
        <li>
            <a href="/archives">
                文章总数
                <span class="sidebar-badge">34</span>
            </a>
        </li>
        
    
</ul>


        <!-- Sidebar Footer -->
        <!--
I'm glad you use this theme, the development is no so easy, I hope you can keep the copyright, I will thank you so much.
If you still want to delete the copyrights, could you still retain the first one? Which namely "Theme Material"
It will not impact the appearance and can give developers a lot of support :)

很高兴您使用并喜欢该主题，开发不易 十分谢谢与希望您可以保留一下版权声明。
如果您仍然想删除的话 能否只保留第一项呢？即 "Theme Material"
它不会影响美观并可以给开发者很大的支持和动力。 :)
-->

<!-- Sidebar Divider -->


<!-- Theme Material -->


<!-- Help & Support -->
<!--

-->

<!-- Feedback -->
<!--

-->

<!-- About Theme -->
<!--

-->

    </div>

    <!-- Sidebar Image -->
    
    <span id="footer-image">
        <a href="https://ci.appveyor.com/project/ElderJames/elderjames-github-io" target="_blank" title="AppVeyor">
            <img src="https://ci.appveyor.com/api/projects/status/b0wack7uxrvifijj?svg=true" alt="AppVeyor"><!--
     --></a>
    </span>


</aside>

                    

                    

                    <!--Footer-->
<footer class="mdl-mini-footer" id="bottom" >
    
        <!-- Paradox Footer Left Section -->
        <div class="mdl-mini-footer--left-section sns-list">
    <!-- Twitter -->
    

    <!-- Facebook -->
    

    <!-- Google + -->
    

    <!-- Weibo -->
    

    <!-- Instagram -->
    

    <!-- Tumblr -->
    

    <!-- Github -->
    
        <a href="ElderJames" target="_blank">
            <button class="mdl-mini-footer--social-btn social-btn footer-sns-github">
                <span class="visuallyhidden">Github</span>
            </button><!--
     --></a>
    

    <!-- LinkedIn -->
    
        <a href="杨舜杰" target="_blank">
            <button class="mdl-mini-footer--social-btn social-btn footer-sns-linkedin">
                <span class="visuallyhidden">LinkedIn</span>
            </button><!--
     --></a>
    

    <!-- Zhihu -->
    
        <a href="ElderJames" target="_blank">
            <button class="mdl-mini-footer--social-btn social-btn footer-sns-zhihu">
                <span class="visuallyhidden">Zhihu</span>
            </button><!--
     --></a>
    

    <!-- Bilibili -->
    

    <!-- Telegram -->
    
    
    <!-- V2EX -->
    
</div>


        <!--Copyright-->
        <div id="copyright">
            Copyright&nbsp;©&nbsp;2015&nbsp;-<script type="text/javascript">var fd = new Date();document.write("&nbsp;" + fd.getFullYear() + "&nbsp;");</script>ElderJames' Blog
            
                <br>
                
                    学习/创作/分享<br /><a href="http://icp.chinaz.com/info?q=yangshunjie.com" rel="nofollow">粤ICP备15021181号-1</a>
                
            
        </div>

        <!-- Paradox Footer Right Section -->

        <!--
        I am glad you use this theme, the development is no so easy, I hope you can keep the copyright.
        It will not impact the appearance and can give developers a lot of support :)

        很高兴您使用该主题，开发不易，希望您可以保留一下版权声明。
        它不会影响美观并可以给开发者很大的支持。 :)
        -->

        <div class="mdl-mini-footer--right-section">
            <div>
                <div class="footer-develop-div">Powered by <a href="https://hexo.io" target="_blank" class="footer-develop-a">Hexo</a></div>
                <div class="footer-develop-div">Theme - <a href="https://github.com/viosey/hexo-theme-material" target="_blank" class="footer-develop-a">Material</a></div>
            </div>
        </div>
    
</footer>


                    <!-- Import JS File -->

    <script>lsloader.load("lazyload_js","/js/lazyload.min.js?1BcfzuNXqV+ntF6gq+5X3Q==", true)</script>



    <script>lsloader.load("js_js","/js/js.min.js?V/53wGualMuiPM3xoetD5Q==", true)</script>



    <script>lsloader.load("np_js","//cdn.bootcss.com/nprogress/0.2.0/nprogress.min.js", true)</script>


<script type="text/ls-javascript" id="NProgress-script">
    NProgress.configure({
        showSpinner: true
    });
    NProgress.start();
    $('#nprogress .bar').css({
        'background': '#29d'
    });
    $('#nprogress .peg').css({
        'box-shadow': '0 0 10px #29d, 0 0 15px #29d'
    });
    $('#nprogress .spinner-icon').css({
        'border-top-color': '#29d',
        'border-left-color': '#29d'
    });
    setTimeout(function() {
        NProgress.done();
        $('.fade').removeClass('out');
    }, 800);
</script>




    
        <script>lsloader.load("sm_js","/js/smoothscroll.js?lOy/ACj5suSNi7ZVFVbpFQ==", true)</script>
    





    <!-- Busuanzi -->
    <script src="https://dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>



<!-- CommentBox -->
   <!-- GitTalk -->





<!-- UC Browser Compatible -->
<script>
	var agent = navigator.userAgent.toLowerCase();
	if(agent.indexOf('ucbrowser')>0) {
		document.write('<link rel="stylesheet" href="/css/uc.css">');
	   alert('由于 UC 浏览器使用极旧的内核，而本网站使用了一些新的特性。\n为了您能更好的浏览，推荐使用 Chrome 或 Firefox 浏览器。');
	}
</script>

<!-- Import prettify js  -->

    



<!-- Window Load -->
<!-- add class for prettify -->
<script type="text/ls-javascript" id="window-load">
    $(window).on('load', function() {
        // Post_Toc parent position fixed
        $('.post-toc-wrap').parent('.mdl-menu__container').css('position', 'fixed');
    });

    
        
    
    
</script>

<!-- MathJax Load-->


<!-- Bing Background -->

<script type="text/ls-javascript" id="Bing-Background-script">
    queue.offer(function(){
        $('body').attr('data-original', 'https://api.i-meto.com/bing?type=S');
    });
</script>


    <script type = "text/ls-javascript" id= "title-script">
        //网页当前状态判断
        var hidden, state, visibilityChange,timer;
        var leaveTitle='(●-●) 我奔溃啦~';
        var stayTitle='(*´∇｀*) 被发现啦~';
        var difaultTitle = document.title;
        var resetTime=1000
        
                leaveTitle += document.title;
                stayTitle += document.title;
        

        if (typeof document.hidden !== "undefined") {
            hidden = "hidden";
            visibilityChange = "visibilitychange";
            state = "visibilityState";
        } else if (typeof document.mozHidden !== "undefined") {
            hidden = "mozHidden";
            visibilityChange = "mozvisibilitychange";
            state = "mozVisibilityState";
        } else if (typeof document.msHidden !== "undefined") {
            hidden = "msHidden";
            visibilityChange = "msvisibilitychange";
            state = "msVisibilityState";
        } else if (typeof document.webkitHidden !== "undefined") {
            hidden = "webkitHidden";
            visibilityChange = "webkitvisibilitychange";
            state = "webkitVisibilityState";
        }
        // 添加监听器，在title里显示状态变化
        document.addEventListener(visibilityChange, function () {
           // document.title = document[state] =='visible'?stayTitle:leaveTitle ;
            if (timer!=null) clearTimeout(timer);
            if (document[state] =='visible'){
                document.title = stayTitle;
                timer=setTimeout(function(){
                    document.title=difaultTitle;
                },resetTime)
            }
            else{
                document.title = leaveTitle;
            }
        }, false);
        //初始化页面状态
        document.title = document[state] =='visible'?stayTitle:leaveTitle ;
    </script>
    

<script type="text/ls-javascript" id="lazy-load">
    // Offer LazyLoad
    queue.offer(function(){
        $('.lazy').lazyload({
            effect : 'show'
        });
    });

    // Start Queue
    $(document).ready(function(){
        setInterval(function(){
            queue.execNext();
        },200);
    });
</script>

<!-- Custom Footer -->



<script>
    (function(){
        var scriptList = document.querySelectorAll('script[type="text/ls-javascript"]')

        for (var i = 0; i < scriptList.length; ++i) {
            var item = scriptList[i];
            lsloader.runInlineScript(item.id,item.id);
        }
    })()
console.log('\n %c © Material Theme | Version: 1.5.0 | https://github.com/viosey/hexo-theme-material %c \n', 'color:#455a64;background:#e0e0e0;padding:5px 0;border-top-left-radius:5px;border-bottom-left-radius:5px;', 'color:#455a64;background:#e0e0e0;padding:5px 0;border-top-right-radius:5px;border-bottom-right-radius:5px;');
</script>

                </main>
            </div>
            
                
<div id="hexo-helper-live2d">
  <canvas id="live2dcanvas" width="150" height="300"></canvas>
</div>
<style>
  #live2dcanvas{
    position: fixed;
    width: 150px;
    height: 300px;
    opacity:0.7;
    right: 0px;
    z-index: 999;
    pointer-events: none;
    bottom: 60px;
  }
</style>
<script type="text/javascript" src="/live2d/device.min.js"></script>
<script type="text/javascript">
const loadScript = function loadScript(c,b){var a=document.createElement("script");a.type="text/javascript";"undefined"!=typeof b&&(a.readyState?a.onreadystatechange=function(){if("loaded"==a.readyState||"complete"==a.readyState)a.onreadystatechange=null,b()}:a.onload=function(){b()});a.src=c;document.body.appendChild(a)};
(function(){
  if((typeof(device) != 'undefined') && (device.mobile())){
    document.getElementById("live2dcanvas").style.width = '75px';
    document.getElementById("live2dcanvas").style.height = '150px';
  }else
    if (typeof(device) === 'undefined') console.error('Cannot find current-device script.');
  loadScript("/live2d/script.js", function(){loadlive2d("live2dcanvas", "/live2d/assets/tororo.model.json", 0.5);});
})();
</script>

            
        </body>
    
</html>
